{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e1ba5bc0-9c19-43fa-b72e-6e4ebecbf207",
   "metadata": {},
   "source": [
    "Chapter 04\n",
    "# 拉格朗日插值\n",
    "Book_6《数据有道》 | 鸢尾花书：从加减乘除到机器学习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "8fb22871-7dc5-4d09-86c8-c95d14632727",
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.interpolate import lagrange\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ead7b84d-b274-436e-9271-4623a38a9d60",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_known = np.linspace(0, 6, num=7, endpoint=True)\n",
    "y_known = np.sin(x_known)\n",
    "# y_known = np.array([-1, -1, -1, 0, 1, 1, 1]) \n",
    "\n",
    "x_fine  = np.linspace(0, 6, num=300, endpoint=True)\n",
    "y_fine  = np.sin(x_fine)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5b1fff80-e043-4757-ac81-9497b65fdf73",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array([0, 1, 2])\n",
    "y = x**3\n",
    "poly = lagrange(x_known, y_known)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0413af1e-84af-40a6-92d8-f52411509a15",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-1.1, 1.1)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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rqcsuBBD93b06NEXPdH7/GPdunWA46TEv7Pb7RdcfiFfffUV9957L97e3oWWDxo0iG7duhEdHc2AAQP45ZdfWLhwIRs2bLjotkaNGkVmZmbB4+DBg8XYaxGRCiI1FYCGxw4wetHnAHzdug/xEU0vuJ64jld+28beo6cJ8nbjzUFdMAUGGh2p1Bl6DtTjjz9+2SveateuzebNmzly5EiR7x09epTg4ODLvs6KFStITExk8uTJl123VatWeHh4sHv3blq1uvCVBF5eXnh5eV12WyIiFVpoaMEfB2yax6aoFiyq354htz7F7AlDCDp9ssh6UvZN3XCIiX84Bg7ebeOHf/VqBicyhqEFKjAwkMAraK0dOnQgMzOTP/74g7Zt2wKwZs0aMjMz6dix42WfP378eGJiYmje/PInt23bto28vDxC9Q9aROTadO7smEwxJQWT3c7Q+MnsDYxgrU9thvZ5iu9/egH3GmGO9cQl7EzL4tlpWwAYasnkul69DE5kHJf4wLJRo0bcfPPNDBo0iNWrV7N69WoGDRpE7969C12BFxUVxbRp0wo9Nysri59//plHHnmkyHb37t3LK6+8wrp160hKSmL27NncfffdtGzZkk6dOpX4fomIlGtmM7z/vuPPJhPe+bk8v/hLquScYXWtZrx73b0wdqxjPSnzss7l8e/vN3Auz0bnajDsqQFwhafRlEcuUaDAcaVc06ZNiY2NJTY2lmbNmvHdd98VWicxMZHMzMxCyyZNmoTdbucf//hHkW16enqyaNEievToQcOGDRk6dCixsbEsXLgQs/5Bi4hcu759HVMV1KgBQERmOv+d+yEAn3Tox6JG+mXVFdjtdv7z8yb2HztNmI8H798cidnsMhWiRJjsul32NcvKysJisZCZmYmfn5/RcVza8ePHAfD39zc4iWvTcXQeHUsnsVo5vnAhHD2Kf3g4L50M4JvVyfh5ujF9aBciAyvG5IvOYMTP5OfL9/L67J14uJn4uZmdFgNuKbXXLklJSUlERkZe1fu3S0ykKSIiLs5shjZtHH/29+fZfCubD2exMfkkj3z9B9OGXIeft4exGeWC1uzL4I25iQC82MBMiwE9DE5UNlTs8TcRETGEl7uZz+6LIcTPi70ZZxjy40asNn0gUtaknDzLYz9uwGqzc0cND+6LK/83Cb5SKlAiImKIID9vvri/Dd4e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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from numpy.polynomial.polynomial import Polynomial\n",
    "Polynomial(poly).coef\n",
    "\n",
    "fig, axs = plt.subplots()\n",
    "plt.plot(x_known, y_known, 'or')\n",
    "plt.plot(x_fine,  y_fine, 'r--',  linewidth = 0.25)\n",
    "plt.plot(x_fine,  poly(x_fine), linewidth = 1.5)\n",
    "\n",
    "for xc in x_known:\n",
    "    plt.axvline(x=xc, color = [0.6, 0.6, 0.6], linewidth = 0.25)\n",
    "\n",
    "plt.axhline(y=0, color = 'k', linewidth = 0.25)\n",
    "plt.autoscale(enable=True, axis='x', tight=True)\n",
    "plt.autoscale(enable=True, axis='y', tight=True)\n",
    "plt.xlabel('x'); plt.ylabel('y')\n",
    "plt.ylim([-1.1,1.1])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
